#ifndef __SC1161__H__
#define __SC1161__H__

#include "esn.h"

#define MAX_BUF_LEN (2048)

//timing
#define Tcsl 20
#define Tcsd 5
#define Tcsh 10
#define Tb 1
#define Tq 20

#define READ_WRITE_FLAG (0X55)
#define SW1_SUCCESS (0x90)
#define SW2_SUCCESS (0x00)

#define ESAM_HEAD_LEN (4)
#define ESAM_LRC_LEN (1)

typedef struct
{	
	uint8_t 	CLA;			//命令类别
	uint8_t 	INS;			//命令类型中的指令代码
	uint8_t 	P1;				//完成一个指令代码的参考符号
	uint8_t 	P2;
	uint8_t 	Len1;			//后续DATA长度，不包括LRC1,两字节表示
	uint8_t 	Len2;
	uint8_t  	LRC1;			//对CLA INS P1 P2 Len1 Len2 DATA 数据,每个字节异或，然后再取反
		
}TypeEsamNormalCommand;

typedef struct
{	
	uint8_t 	SW1;			//状态自己
	uint8_t 	SW2;			
	uint8_t 	Len1;			//后续DATA长度，不包括LRC1,两字节表示
	uint8_t 	Len2;
	char *      Data;
	uint8_t  	LRC2;			//对CLA INS P1 P2 Len1 Len2 DATA 数据,每个字节异或，然后再取反
}TypeEsamReceData;

typedef struct
{	
	uint8_t 	CLA;			//命令类别
	uint8_t 	INS;			//命令类型中的指令代码
	uint8_t 	P1;				//完成一个指令代码的参考符号
	uint8_t 	P2;
	uint8_t 	Len1;			//后续DATA长度，不包括LRC1,两字节表示
	uint8_t 	Len2;
	uint8_t 	Data[MAX_BUF_LEN];		    //数据域
}SEND_DATA;

extern encrypt_type sc1161_prob(void);
extern int get_sc1161_serial_number(char *serial_string);

#endif  /* __SC1161__H__ */

